package com.chehejia.devmng.platform.observer.example;

import java.util.ArrayList;
import java.util.List;

/**
 * 描述:
 *          目标对象；他知道观察它的观察者，并提供注册和删除观察者接口、
 * @author 王永坤
 * @createDate 2019-03-14 23:22
 */
public class Subject {

    /**
     * 用来保存注册的观察者对象
     */
    private List<ObServer> obServers = new ArrayList<ObServer>();

    /**
     * 注册观察者对象
     * @param obServer
     */
    public void attach(ObServer obServer){
        obServers.add(obServer);
    }
    /**
     * 注册观察者对象
     * @param obServer
     */
    public void detach(ObServer obServer){
        obServers.remove(obServer);
    }

    /**
     * 通知所有注册的观察者
     */
    protected void nofityObserver(){
        obServers.forEach(l ->l.update(this));
    }
}
